// 通用响应接口
export interface ApiResponse<T = any> {
  success: boolean
  code: number
  message: string
  data: T
}

// 分页查询参数
export interface PageParams {
  page: number
  pageSize: number
}

// 分页结果
export interface PageResult<T> {
  total: number
  result: T[]
}

// 权限基础接口
export interface Permission {
  id: number
  permissionName: string    // 菜单名称
  parentId: number | null   // 父级ID，null表示顶级
  type: number            // 0-目录 1-菜单 2-操作按钮
  menuUrl: string         // 菜单路由地址
  permissionStatus: string // enabled|disabled
  show: number            // 0-隐藏 1-显示
  icon: string            // 菜单图标（URL或antd图标名）
  permissionKey: string   // 权限唯一标识
  createdBy: string | null
  createdTime: string | null
  updateBy: string | null
  updateTime: number | string | null  // 可能是时间戳或字符串
  isDeleted: number       // 0-未删除 1-已删除
}

// 树形权限结构
export interface PermissionTree extends Permission {
  children?: PermissionTree[]
}

// 权限分页查询参数
export interface PermissionPageParams extends PageParams {
  id?: number
  permissionName?: string
  parentId?: number
  type?: number
  menuUrl?: string
  permissionStatus?: string
  show?: number
  icon?: string
  permissionKey?: string
  createdBy?: string
  createdTime?: string
  updateBy?: string
  updateTime?: string
  isDeleted?: number
}

// 角色信息接口
export interface Role {
  id: number
  roleName: string        // 角色名称
  roleKey: string         // 角色标识
  roleStatus: string      // enabled|disabled
  createdTime: string
  createdBy: string
  updateTime: string
  updateBy: string
  isDeleted: number
  authPermissionResponseVOS: Permission[] // 关联权限列表
}

// 角色分页查询参数
export interface RolePageParams extends PageParams {
  id?: number
  roleName?: string
  roleKey?: string
  roleStatus?: string
  createdTime?: string
  createdBy?: string
  updateTime?: string
  updateBy?: string
  isDeleted?: number
}

// 用户信息接口
export interface User {
  id: number
  userType: string
  openid: string
  nickName: string
  avatar: string
  schoolId: number
  studentId: string
  email: string
  defaultAvatar: string
  defaultNickName: string
  sex: number
  phone: string
  grade: string
  userStatus: string
  createTime: string
  createBy: string
  updateTime: string
  updateBy: string
  isDeleted: number
  lastLoginTime: string
  lastIp: string
  loginCount: number
  stellarMeetCode: number
  roleKeys: string[]      // 用户角色标识数组
}

// 用户角色关联
export interface UserRole {
  id: number
  userId: number
  roleId: number
  createdBy: string
  createdTime: string
  updateBy: string
  updateTime: string
  isDeleted: number
}

// 角色权限关联
export interface RolePermission {
  id: number
  roleId: number
  permissionId: number
  createdBy: string
  createdTime: string
  updateBy: string
  updateTime: string
  isDeleted: number
}

// 登录表单
export interface LoginForm {
  phone: string       // 手机号码
  captcha?: string
}

// 登录响应
export interface LoginResponse {
  token: string
  avatar?: string,
  id?: number,
  nickName?: string
}

// 路由元信息接口
export interface RouteMeta {
  title: string           // 页面标题
  icon?: string          // 菜单图标
  permission?: string    // 权限标识
  hidden?: boolean       // 是否隐藏菜单
  keepAlive?: boolean    // 是否缓存组件
  breadcrumb?: boolean   // 是否显示面包屑
}

// 扩展的路由配置
export interface AppRouteRecordRaw {
  path: string
  name?: string
  component?: any
  redirect?: string
  meta?: RouteMeta
  children?: AppRouteRecordRaw[]
} 